### Project 5 Rainbow Ambient Light **1. Beschrijving** Arduino 2812RGB LED is een programmeerbare kleurrijke dromerige lichtbron, waarvan kleur, helderheid en ritme verstelbaar zijn. Dit regenboog sfeerverlichting kan naar wens worden gebruikt als dynamische decoratie. Of je kunt het laten "dansen met muziek". Belangrijk is dat het kan worden verbeterd als alarm. De ingebouwde sensor detecteert de omgeving om gebruikers te waarschuwen door kleur, helderheid en ritme te veranderen. **2. Werking** ![](media/A22.png) Het dataprotocol gebruikt een communicatiemodus van single-line return-to-zero code. Nadat de pixel is gereset bij inschakeling, ontvangt de DIN-terminal data van de controller. De eerst binnenkomende 24bit data wordt door de eerste pixel uitgelezen en naar het interne dataregister gestuurd. De resterende data wordt versterkt door een versterkingscircuit en via de DOUT-poort doorgestuurd naar de volgende gekoppelde pixel. Bij doorgifte via pixels neemt het signaal telkens met 24bit af. Daarnaast gebruikt de pixel automatische vormgeving en doorstuurtechnologie, waardoor het aantal gekoppelde pixels alleen wordt beperkt door de signaaltransmissiesnelheid. **3. Aansluitschema** ![](media/A23.png) **4. Testcode** ``` /* keyestudio ESP32 Inventor Learning Kit Project 5.1 Rainbow Ambient Light http://www.keyestudio.com */ //Add 2812RGB library file #include #define PIN 15 Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PIN); //Defines the instance strip and assigns the RGB LED number pins to the library code void setup() { strip.begin(); //Activate RGB LED strip.show(); // Refresh the display } void loop() { strip.setPixelColor(0, strip.Color(255, 0, 0)); //The frist RGB LED is red strip.setPixelColor(1, strip.Color(0, 255, 0)); //The second RGB LED is green strip.setPixelColor(2, strip.Color(0, 0, 255)); //The third RGB LED is blue strip.setPixelColor(3, strip.Color(255, 255, 0)); //The fourth RGB LED is yellow strip.setPixelColor(4, strip.Color(255, 0, 255)); //The fifth RGB LED is purple strip.setPixelColor(5, strip.Color(255, 255, 255)); //The sixth RGB LED is white strip.show(); //Refresh the display delay(100); //Give a delay to save the stability of the display } ``` **5. Testresultaat** Na het uploaden van de code en inschakelen, zal de LED oplichten in verschillende kleuren. Van links naar rechts: - De eerste RGB LED is rood - De tweede RGB LED is groen - De derde RGB LED is blauw - De vierde RGB LED is geel - De vijfde RGB LED is paars - De zesde RGB LED is wit ![](media/A24.png) **6. Uitgebreide code** ``` /* keyestudio ESP32 Inventor Learning Kit Project 5.2 Rainbow Ambient Light http://www.keyestudio.com */ //Add 2812RGB library file #include #define PIN 15 Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, PIN, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { // Some example procedures showing how to display to the pixels: colorWipe(strip.Color(255, 0, 0), 50); // Red colorWipe(strip.Color(0, 255, 0), 50); // Green colorWipe(strip.Color(0, 0, 255), 50); // Blue // Send a theater pixel chase in... theaterChase(strip.Color(127, 127, 127), 50); // White theaterChase(strip.Color(127, 0, 0), 50); // Red theaterChase(strip.Color( 0, 0, 127), 50); // Blue rainbow(20); rainbowCycle(20); theaterChaseRainbow(50); } // Fill the dots one after the other with a color void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i